/****************************************** * 兼容IE8 下的 console 未定义(有时间记得测试下 IE8下的 console 问题) *****************************************/ window.console = window.console || (function(){ var c = {}; c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile = c.clear = c.exception = c.trace = c.assert = function(){}; return c; })(); //询问是否操作 function ask_action(_this,msg){ var url = _this.href; if(!url){ url = $(_this).attr('data-url'); } layer.confirm(msg, function (index) { $.post(url,function(res){ layer.msg(res.msg,{time:res.time,end:function(){ if(res.url){ location.href = res.url; } else { location.reload(); } }}); },'json'); }); return false; } function likes($key){} $(function(){ /****************************************** * 清除页面上的错误提示 *****************************************/ function clear_form_error_tip($this){ $this.removeClass('tdy-form-error').parents('.tdy-form-error').removeClass('tdy-form-error'); } $('body').on('change','select',function(){ clear_form_error_tip($(this)); }); $('body').on('focus','input',function(){ var val = $(this).val(); $(this).blur(function(){ if($(this).val() != val){ clear_form_error_tip($(this)); } }); }); /****************************************** * 禁用所有 input 的历史记录 autocomplete 为 on 的例外 *****************************************/ $('input[type="text"]').each(function(){ if($(this).attr('autocomplete') != 'on'){ $(this).attr('autocomplete','off'); } }); $('input[type="password"]').attr('autocomplete','new-password'); /****************************************** * 前台ajax提交表单 *****************************************/ $('body').on('submit','.ajax-form',function(){ var _layer = parent.layer; var _this = $(this); _this.find('.tdy-form-error').removeClass('tdy-form-error'); var load_index = _layer.load(2,{shade:0.5}); var formData = new FormData(); var url = this.action; var files = _this.find('input[type="file"]'); _this.find('input[type="file"]').each(function(){ var name = $(this).attr('name'); //在后台ajax 提交时候发现 图片没选择时候 会是 undefined 所以加了这个过滤 20181205 饶 for(var i in $(this)[0].files){ if($(this)[0].files[i] != undefined){ formData.append(name, $(this)[0].files[i]); } } // formData.append(name, $(this)[0].files[0]); }); var data = _this.serializeArray(); $.each(data,function(index,val){ formData.append(val.name,val.value); }); var $http = $.ajax({ url: url, type: 'post', data: formData, // async: false, dataType:'json', cache: false, contentType: false, processData: false, success: function (result) { _layer.close(load_index); //判断数据是不是成功修改 // 0,警告,1成功,2错误,3疑问,4锁定,5哭脸,6笑脸 $token = $http.getResponseHeader("__token__"); $("input[name='__token__']").val($token); var time = result.time > 0 ? result.time : (result.time < 0 ? -1 : 2000) if(time == '-1'){ //time == -1 说明是不想要提示 直接跳转 window.location.href = result.url; }else{ _layer.msg(result.msg,{time:time,shade: 0.3,icon: result.code ? 1 : 2,end:function(){ if(result.url && result.url != '1'){ window.location.href = result.url; } else if (result.code){ if(_this.attr('layer-type') == "parent"){ parent.location.reload(); } else { location.reload(); } } else if (!result.code && result.select){ //错误渲染错误节点并滚动到位置 $(result.select).addClass('tdy-form-error'); var slect_top = $(result.select).offset().top; if($(result.select).next('div').length > 0 && $(result.select).next('div').find('.layui-input').length > 0){ $(result.select).next('div').find('.layui-input').addClass('tdy-form-error'); slect_top = $(result.select).next('div').find('.layui-input').top; } $(document).scrollTop(slect_top-50); } }}); } }, error: function (data) { _layer.close(load_index); $token = $http.getResponseHeader("__token__"); $("input[name='__token__']").val($token); alert("网络请求失败,请重试!"); } }); return false; }); }); function dd(val1,val2,val3,val4,val5,val6){ if(val1 != undefined){ console.log(val1); } if(val2 != undefined){ console.log(val2); } if(val3 != undefined){ console.log(val3); } if(val4 != undefined){ console.log(val4); } if(val5 != undefined){ console.log(val5); } if(val6 != undefined){ console.log(val6); } } /****************************************** * in_array()js方法--判断一个值是否在数组中 *****************************************/ function in_array(search,array){ for(var i in array){ if(array[i]==search){ return true; } } return false; } /****************************************** * layui下拉多选,需要配合layui使用 *****************************************/ function select_multiple(){ if(typeof formSelects == 'undefined'){ layui.config({ base: '/template/static/library/layui/' }).extend({ formSelects: 'formSelects-v3' }); } layui.use(['form', 'formSelects'], function() { $dom = $("select[xm-select]"); $dom.each(function(){ var name = $(this).attr('xm-select'); if(formSelects.value(name,'val') != null){ var number = formSelects.value(name,'val').length; }else{ var number = 0; } if(number > 1){ $(this).parent().append(''+number+''); } if($('input[name="'+name+'"]').length < 1){ $(this).before(''); } $(this).prev().val(formSelects.value(name,'val').join(',')); formSelects.render({ name:name, on:function(data,arr,val,selected){ // console.log(111,name,data,arr,val,selected); var number = arr.length; $input = $(data.elem).prev(); if(number > 1){ if($(data.elem).parent().find('.checked_length').length < 1){ $(data.elem).parent().append(''+number+''); } else { $(data.elem).parent().find('.checked_length').text(number); } }else{ $(data.elem).parent().find('.checked_length').remove(); } $input.val(formSelects.value(name,'val').join(',')); } }); }); }) } /****************************************** * 地区联动操作layui方法 *****************************************/ var area_data; function area_linkage(selectname,data){ console.log('1111',selectname,data); // 获取地区总数据 应该放大 触发事件里面,减少页面新打开的速度 20181223 饶立宝 //2019.5.11张德长 data传出来的值是对象,不能直接使用length判断,应该加上Object.keys(data) if(typeof area_data == 'undefined' && !Object.keys(data).length || $.isArray(data) && !data.length){ // ajax 获取请求 api 获取到 地区数据 // area_json ======= $.ajax({ type:'post', url:'/api/jsapi/get_area/', dataType:"json", async:false,//同步 success:function(res){ area_data = res; },error:function(res){ console.log(res); } }) }else{ area_data = data; } console.log(123456,area_data); layui.use('form',function(){ var form= layui.form; form.on("select("+selectname+")", function (data) { var $next = $(data.elem).parent().next().find('select'); var $nextAll = $(data.elem).parent().nextAll().find('select'); if($next.length == 0) { return false; } $nextAll.each(function(){ $(this).children('option').not(':eq(0)').remove(); }); if(data.value){ var child = area_data[data.value]['child']; if(child){ $.each(child,function(index,val){ $option = ""; $next.append($option); }) } } form.render(); return false; }) }) } /****************************************** * 地区联动操作原生样式方法 *****************************************/ function native_area_linkage(selectname,data){ console.log(78789789); $('.area_select').change(function(){ if(typeof area_data == 'undefined' && !Object.keys(data).length){ // ajax 获取请求 api 获取到 地区数据 $.ajax({ type:'post', url:'/api/jsapi/get_area/', dataType:"json", async:false,//同步 success:function(res){ area_data = res; },error:function(res){ console.log(res); } }) } var value = $(this).children('option:selected').val(); if($(this).hasClass('sheng')){ $(this).siblings('select').each(function(){ $(this).children('option').not(':eq(0)').remove(); }); }else if($(this).hasClass('shi')){ $(this).next('select').children('option').not(':eq(0)').remove(); } if(value && !$(this).hasClass('xian')){ var child = area_data[value]['child']; $dom = $(this).next('select'); if(child){ $.each(child,function(index,val){ $option = ""; $dom.append($option); }); } } }) } /****************************************** * 地区联动删除添加的元素layui版 *****************************************/ function delete_dom(_this){ if($(_this).parents('div.layui-input-block').next('script').length > 0){ $(_this).parents('div.layui-input-block').next('script').remove(); } $(_this).parents('div.layui-input-block').remove(); } /*弹出指定 链接的 iframe 弹窗*/ function show_iframe(href,title,area){ var urlStr = href.substring(href.indexOf("/",9)); $_this = $('a[href="'+urlStr+'"]'); $_this.attr('href','javascript:void(0);'); if(title == undefined){ title = false; } console.log(href.indexOf('/index/member/login/')); console.log(href); console.log(href.indexOf('/index/member/login/') >= 0); if(typeof($_Y) != 'undefined' && $_Y.ismobile){ area = ['100%','100%']; } else if (href.indexOf('/index/member/login/') >= 0) { area = ['778px','400px']; } else if (area == undefined){ area = ['500px','400px']; } // 火狐不兼容,所以去除 // event.preventDefault(); if(href){ if(href.indexOf("iframe=1") == '-1' ){ if(href.indexOf("?") == '-1' ){ href += '?iframe=1'; } else { href += '&iframe=1'; } } parent.layer.open({ type: 2 ,title: title ,area: area ,content: href //这里content是一个普通的String ,end: function(){ $_this.attr('href',urlStr); location.reload(); } }); } return false; } /*********************************** * 链接操作确认 **********************************/ function tdy_confirm(_this,title){ console.log(78978979); $this = $(_this); var url = $this.attr("data-url") ? $this.attr("data-url") : _this.href; $this.attr('href','javascript:void(0);'); var token = $("input[name='__token__']").val(); if(typeof title == "undefined"){ title = '您确定要操作吗?'; } layer.confirm(title,function (index) { var $http = $.ajax({ type:"post", dataType:"json", data:{'__token__':token}, url:url, success: function (res) { $this.attr('href',url); layer.msg(res.msg,{time:2000,shade:0.3,end: function () { if(res.code == 1){ if(res.url && res.url != '1'){ window.location.href = res.url; }else{ location.reload(); } }else{ // $("input[name='__token__']").val($http.getResponseHeader("__token__")); $token = $http.getResponseHeader("__token__"); $("input[name='__token__']").val($token); } }}) },error: function (res) { $this.attr('href',url); } }); layer.close(index); },function(index, layero){ $this.attr('href',url); }); return false; } /*********************************** * 这里个方法废除掉 以后就用 tdy_confirm **********************************/ function delete_way(_this,title){ tdy_confirm(_this,title); } /*********************************** * 生成随机数 **********************************/ function tdyRandom(n) { var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var res = ""; for(var i = 0; i < n ; i ++) { var id = Math.ceil(Math.random()*61); res += chars[id]; } return res; } function tdyRandomChar(n) { var chars = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var res = ""; for(var i = 0; i < n ; i ++) { var id = Math.ceil(Math.random()*51); res += chars[id]; } return res; } /*商品分类联动*/ function get_cate_html(selectname,data){ console.log(111122) $('body').on('change','select[name="'+selectname+'_area[]"]',function(){ $(this).nextAll().remove(); var cate_area_id = $(this).val(); // if(cate_area_id == 0){ // return false; // } var arr = []; console.log(cate_area_id); if(cate_area_id != ''){ var name = $(this).attr('data-flg') console.log(data); var optionHtml = ''; $(this).after(optionHtml); } }); $('body').on('change','select[name="'+selectname+'[]"]',function(){ $(this).nextAll().remove(); var catid = $(this).val(); console.log(typeof(catid)+'----'+catid); if(catid == '' || !catid){ return false; } if($.isEmptyObject(data[catid]['child'])){ return false; } var optionHtml = ''; for(var i in data[catid]['child']){ var option_catid = data[catid]['child'][i]; optionHtml += ''; } //$(this).nextAll().remove(); var $html = $(this).prop("outerHTML"); $html = $($html); $html.find('option').remove(); $html.append(optionHtml); $(this).after($html); }); } /*服务商品分类联动*/ function get_server_cat_html(selectname,data){ $('body').on('change','select[name="'+selectname+'[]"]',function(){ $(this).nextAll().remove(); var id = $(this).val(); console.log(typeof(id)+'----'+id); if(id == '' || !id){ return false; } if($.isEmptyObject(data[id]['child'])){ return false; } var optionHtml = ''; for(var i in data[id]['child']){ var option_catid = data[id]['child'][i]; optionHtml += ''; } //$(this).nextAll().remove(); var $html = $(this).prop("outerHTML"); $html = $($html); $html.find('option').remove(); $html.append(optionHtml); $(this).after($html); }); } /* 获取 页面url 的二维码 */ function get_page_qrcode(arr,select,logo,url){ if( logo == undefined){ logo = ''; } if( url == undefined){ url = window.location.toString(); console.log(url); } $.ajax({ type:'post' ,url:'/api/common/getpageqrcode/' ,data:{ arr:arr,logo:logo,url:url} ,dataType: 'json' ,success:function(res){ if( typeof($(select).attr('src')) == "undefined" ){ if( $(select).children('img').length<=0 ){ var imgHtml = ''; $(select).append(imgHtml); }else{ $(select).find('img').attr('src',res.data); } $(select).find('a').attr('href',res.data); }else{ $(select).attr('src',res.data); } } ,error:function(){ } }) } /*页面时间倒计时*/ // 这个会导致所有页面都会启动一次计数器,需要修改 20181227 rao timer = setInterval(function pay_count_down(){ //这是服务器时间,不能使用new date 因为这是电脑的时间 跟实际不符合 var now_time = parseInt($('head').find('meta[name="server-timestamp"]').attr('content')); $('head').find('meta[name="server-timestamp"]').attr('content',now_time+1); $('.tdy-count-down').each(function(){ $_this = $(this); if($_this.attr('data-time') == undefined){ $_this.attr('data-time',$_this.text()); } var expire_time = $_this.attr('data-time'); var end_time = Date.parse(new Date(expire_time)); var time = end_time-now_time*1000; if(time>=0){ var day = parseInt(time / 1000 / 86400); var hour = parseInt((time / 1000 / 3600) % 24); var minite = parseInt((time / 1000 / 60) % 60); var second = parseInt(time / 1000 % 60); $_this.text(day + "天" + hour + "小时" + minite + "分" + second + "秒"); }else{ //这里处理通过ajax去改变订单状态以及过期时间、 //这里先刷新页面 // window.location.reload(); $_this.removeClass('tdy-count-down'); $_this.attr('data-time',''); console.log('过期'); } }); // if($('.tdy-count-down[data-time=""]').length == $('.tdy-count-down').length){ // clearInterval(timer); // } if($('.tdy-count-down').length == '0'){ clearInterval(timer); } },1000); function change_url(p, url){ if(typeof(url) == 'undefined'){ url = document.location.href; } var a = []; var u = url.split("?"); if(u[1]){ var q = u[1].split("&"); for(var i in q){ var c = q[i].split("="); if(c[1]){ a[c[0]] = c[1]; } } } for(var i in p){ a[i] = p[i] } var s = []; for(var i in a){ s.push(i+'='+a[i]); } s = s.join('&'); return u[0]+'?'+s; } /* *2019.5.9 张德长 *请求URL路径重写 *parameter 参数数组,如果参数有值则添加,如果没有值为空则删除 */ /* function change_url(parameter,url){ if(typeof(url) == 'undefined'){ url = document.location.href; } var parameter_arr = {}; if(url.indexOf("?") != -1){ var arr = url.split("?"); url = arr[0];//url地址 //处理原来链接上带的参数 if(arr[1]){ var new_arr = arr[1].split('&'); for(var $i = 0; $i < new_arr.length ; $i++){ var res = new_arr[$i].split('='); //这里没判断会当链接上出现?=&aa=b;情况下,待会链接出现undefind实在丑 if(res[0]){ parameter_arr[res[0]] = (res[1]!='' ? res[1] : ''); } } } } //处理传来的数组参数 for(var index in parameter){ if(parameter[index] != ''){ //当值不是空的时候直接添加,当值已经存在的时候修改 parameter_arr[index] = parameter[index]; }else{ //如果值为空的时候查询出是否在数组中存在,存在的时候删除 delete parameter_arr[index]; } } //将参数拼接到链接后面 if(Object.keys(parameter_arr).length > 0){ url += '?'; for(var index1 in parameter_arr){ url += (index1 +'='+parameter_arr[index1] +'&'); } url = url.substring(0,url.length-1); } return url; } */